// 定义响应接口
export interface ResponseInterface {
    code: number, // 响应码
    msg: string, // 响应消息
    data: any // 响应数据
}

// 定义登录DTO（数据传输对象）
export interface LoginDTO {
    account: string, // 账号
    password: string, // 密码
    userType: string // 用户类型
}

// 定义学生注册DTO，扩展自LoginDTO
export interface StudentRegisterDTO extends LoginDTO {
    rePassword: string // 确认密码
}

// 定义用户类型枚举
export const UserType = {
    STUDENT: {
        type: "student",
        value: "学生"
    },
    ENTERPRISE: {
        type: "enterprise",
        value: "企业"
    },
}

// 定义企业信息接口
export interface EnterpriseInterface {
    id: string, // 企业ID
    password: string, // 企业密码
    name: string, // 企业名称
    email: string, // 企业邮箱
    address: string, // 企业地址
    unifiedSocialCreditCode: string, // 统一社会信用代码
    phone: string, // 企业联系电话
    EMSCode: string, // 邮政编码
    industryAffiliation: string, // 所属行业
    enterpriseType: string, // 企业类型
    createdDate: Date | string, // 成立时间
    contactPerson: string, // 企业联系人
    description: string // 企业详情
}

// 定义企业注册信息，扩展自EnterpriseInterface和LoginDTO
export interface EnterpriseRegister extends EnterpriseInterface, LoginDTO {
    rePassword: string // 确认密码
}

// 定义学生信息接口
export interface StudentInterface {
    userType: 'STUDENT'; // 用户类型固定为'STUDENT'
    id: string, // 学生ID
    studentId: string; // 学号
    name: string; // 姓名
    address: string; // 地址
    email: string; // 邮箱
    phone: string; // 电话
    sex: 0 | 1, // 性别：0表示男，1表示女
    birthDay: Date | string; // 出生日期
    school: string; // 学校
}

// 定义修改密码接口
export interface UpdatePasswordInterface {
    oldPassword: string; // 原密码
    newPassword: string; // 新密码
    reNewPassword: string, // 确认新密码
    userType: string // 用户类型
}

// 定义个人简历基本信息接口
export interface ResumeNormalInfoInterface {
    id: string; // 简历ID
    studentId: string; // 学生ID，不是学号，是学生存储在数据库里的主键id。
    workYear?: number; // 工作年限，可选
    targetJob?: string; // 目标职位，可选
    targetSalary?: number; // 目标薪资，可选
    skills?: string; // 技能，可选
    honoraryCertificate?: string; // 荣誉证书，可选
    selfEvaluation?: string; // 自我评价，可选
    hobbies?: string; // 爱好，可选
}

// 定义教育背景接口
export interface EducationalBackgroundInterface {
    id: string; // 教育背景ID
    resumeId: string; // 简历ID
    studentId: string; // 学生ID
    school: string; // 学校
    major: string; // 专业
    degree: string; // 学位
    description: string; // 描述
    startYear: Date | string; // 开始年份
    endYear: Date | string; // 结束年份
}

// 定义项目经验接口
export interface ProjectExperienceInterface {
    id: string; // 项目经验ID
    resumeId: string; // 简历ID
    studentId: string; // 学生ID
    name: string; // 项目名称
    description: string; // 项目描述
    role: string, // 扮演角色
    startTime: Date | string; // 开始时间
    endTime: Date | string; // 结束时间
}

// 定义校园经历接口，继承自ProjectExperienceInterface
export interface CampusExperienceInterface extends ProjectExperienceInterface {
}

// 定义实习经历接口
export interface InternshipExperienceInterface {
    id: string; // 实习经历ID
    resumeId: string; // 简历ID
    studentId: string; // 学生ID
    enterpriseName: string; // 企业名称
    position: string; // 职位
    description: string; // 描述
    startTime: Date | string; // 开始时间
    endTime?: Date | string; // 结束时间，可选，表示"至今"时可不填
}

// 定义简历视图对象接口，扩展自ResumeNormalInfoInterface，包括校园经历、教育背景、实习经历和项目经验
export interface ResumeVOInterface extends ResumeNormalInfoInterface {
    campusExperiencesList: CampusExperienceInterface[]; // 校园经历列表
    educationalBackgroundsList: EducationalBackgroundInterface[]; // 教育背景列表
    internshipExperiencesList: InternshipExperienceInterface[]; // 实习经历列表
    projectExperiencesList: ProjectExperienceInterface[]; // 项目经验列表
}

// 定义更新企业信息接口
export interface UpdateEnterpriseInfoInterface {
    id: string, // 企业ID
    email?: string, // 邮箱，可选
    phone?: string, // 电话，可选
    contactPerson?: string, // 联系人，可选
    description?: string // 描述，可选
}

// 定义简历和职位关联接口
export interface ResumeAndJobInterface {
    resumeId: string, // 简历ID
    jobId: string, // 职位ID
    status?: number // 状态，可选
}

// 定义职位接口
export interface JobInterface {
    id: string; // 职位ID
    name: string; // 职位名称
    enterpriseId: string; // 企业ID
    enterpriseName: string; // 企业名称
    createdDate?: Date | string; // 创建日期，可选
    updatedDate?: Date | string; // 更新日期，可选

    jobType: string; // 职位类型
    jobTypeStr: string, // 职位类型字符串
    description: string; // 职位描述
    requirements: string; // 职位要求
    educationalRequirements: string; // 教育要求
    educationalRequirementsStr: string; // 教育要求字符串
    workAddress: string; // 工作地址
    preferredMajors: string; // 优先专业

    faceTalkSalary: boolean; // 面议薪资
    minSalary?: number; // 最低薪资，可选
    maxSalary?: number; // 最高薪资，可选
    minSalaryUnit?: '百' | '千' | '万'; // 最低薪资单位，可选
    maxSalaryUnit?: '百' | '千' | '万'; // 最高薪资单位，可选
    salaryTime?: '小时' | '天' | '周' | '月' | '年'; // 薪资结算时间单位，可选
}

// 定义通过和面试通知DTO
export interface PassAndInterviewNotificationDTO {
    studentId: string; // 学生ID
    studentName: string; // 学生姓名
    studentEmail: string, // 学生邮箱
    resumeId: string, // 简历ID
    enterpriseId: string; // 企业ID
    enterpriseName: string; // 企业名称
    jobId: string; // 职位ID
    jobName: string; // 职位名称
    interviewTime: Date | undefined; // 面试时间
    address: string; // 面试地址
    contact: string; // 联系方式
    phone: string; // 电话
    remark: string // 备注
}

// 定义检查简历和职位的视图对象接口
export interface CheckResumeVOInterface {
    enterprise?: EnterpriseInterface, // 可选的企业信息
    resume?: Map<string, ResumeVOInterface[]>; // 简历信息，以学生ID为键
    jobs?: Array<JobInterface>; // 职位信息列表
}

// 定义专业列表
export const majorList = ['计算机科学与技术', '软件工程', '电子信息工程', '其他'];
// 定义教育程度列表
export const educationLevels = [
    {
        label: '专科',
        value: '专科'
    },
    {
        label: '本科',
        value: '本科'
    },
    {
        label: '硕士',
        value: '硕士'
    },
    {
        label: '博士',
        value: '博士'
    },
    {
        label: '其他',
        value: '其他'
    }
]
// 定义职位类型列表
export const jobTypes = [
    {
        label: '全职',
        value: '全职'
    },
    {
        label: '兼职',
        value: '兼职'
    },
    {
        label: '实习',
        value: '实习'
    },
    {
        label: '其他',
        value: '其他'
    }
]